Alternativa k MDI

Otázka od: martin

3. 6. 2004 13:22

Dobry den,

  viete o nejake free alternative MDI?
  Nieco bez nedostatkov MDI.
  Predstavujem si to ako nejaky hlavny form, kde ostatne formulare
  sa otvaraju cez show alebo showmodal.
  Ak form otvorim cez show a minimalizujem, tak sa nebude
  minimalizovat na taskbar ale do hlavneho okna podobne ako MDI.
  Form otvoreny cez showmodal - minimalizuje aplikaciu.
  V podstate mi staci ta minimalizacia nemodalneho formu do hlavneho
  formu a maximalizacia nemodalneho formu v ramci hlavneho formu.
  Mohlo by to zvladat cascade,zoznam otvorenych formov a pod.
  Verim, ze nieco take existuje ....hrabal som aj v JVCL, ale som to
  nenasiel - dufam, ze som hrabal nespravne  

  Na MDI mi vadi:
  - ak vytvaram form, hned sa aj zobrazi
  - neda sa ovplyvnovat velkost formulara,
    stale si to prisposobuju windowsy
  - nekorektne funguje aj centrovanie formu
  - komplikacia zmeny farby hlavneho formu a vlozenie obrazku sucasne
    (jasne, da sa to riesit, ale je to zbytocne kompl.)
  - ...kopec dalsich drobnych chyb vychadzajucich zo samotnej impl.MDI

--
Martin




----------
* www.inMail.cz - Vase emailova adresa na cely zivot ZDARMA
* www.czechia.com - profesionalni webhosting a registrace domen za vyhodne ceny
* Zoner Media Explorer 6 - Poznejte kouzlo digitalni fotografie!
(http://www.zoner.cz/zme6)


Odpovedá: Milan Tomes

4. 6. 2004 6:41

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of martin
> Sent: Thursday, June 03, 2004 1:54 PM
>
> Na MDI mi vadi:
> - ak vytvaram form, hned sa aj zobrazi

No ja to resim tak, ze vsechny formulare vytvarim jako normalni (FormStyle =
fsNormal) a v pripade potreby tuto vlastnost prenastavim na fsMDIChild - mam
overridnute metody Show a ShowModal

> - neda sa ovplyvnovat velkost formulara,
> stale si to prisposobuju windowsy

S timhle nemam jediny problem - v designu nastavim velikost a v runtime mam
tuto velikost pouzitou...

> - nekorektne funguje aj centrovanie formu

To je fakt, ale neni problem to upravit


S pozdravem

Milan Tomes



Odpovedá: Daniel Frantik

7. 6. 2004 12:22

> -----Original Message-----
> Na MDI mi vadi:
A pridej jeste problem s mizejicimi a obcas se zakazujicimi tlacitky pro
minimize/maximize/close ... (ale i toto se da obejit)

Danik


Odpovedá: martin

7. 6. 2004 22:20

>> Na MDI mi vadi:
> A pridej jeste problem s mizejicimi a obcas se zakazujicimi tlacitky pro
> minimize/maximize/close ... (ale i toto se da obejit)

... a to este neviem co ma caka.
Preto Vas prosim, ak mate niekto uz vychytane muchy okolo MDI a
nebranite sa opensource, poslite kusky kodu, pripadne ucelenu unitu,
hoci na sukr.mail, mno myslim ze to tu potesi kazdeho.

Mozno otazka na P.Vonese - nie je nieco ohladom MDI aj sucastou JCL
alebo JVCL ? Zatial som to tam nenasiel, mozno zle hladam.

Vdaka.M.



Odpovedá: Jan Fiala

9. 6. 2004 14:53

3.6.2004 martin:
> Na MDI mi vadi:
> - ak vytvaram form, hned sa aj zobrazi

A proc jej potrebujes mit vytvoreny a nezobrazeny ?

> - neda sa ovplyvnovat velkost formulara, stale si to prisposobuju
> windowsy
> - nekorektne funguje aj centrovanie formu

Da. jen je treba zmenit property u formu z Default treba Designed nebo
MainFormCenter

> - komplikacia zmeny farby hlavneho formu a vlozenie obrazku sucasne
> (jasne, da sa to riesit, ale je to zbytocne kompl.)

Zmena barvy main formu je bez problemu.
S obrazkem je tam komplikace, protoze MDI Main form ma 2 vrstvy

--
Jan Fiala
mailto:jan.fiala@wo.cz


Odpovedá: martin

9. 6. 2004 15:27

Povodna sprava zo dna : 9. 6. 2004, od <jan.fiala@wo.cz> :
>> - ak vytvaram form, hned sa aj zobrazi
JF> A proc jej potrebujes mit vytvoreny a nezobrazeny ?
Napr. preto, ze mam na nom nejaku komponentu, ktoru potrebujem aj inde
- teda jej aktualny stav property a pod.
Jasne, ze to ide urobit inak, ale jednoducho mi vadi ze create
"spusta" hned aj show ....berem, ze to vychadza z architektury MDI, a
preto sa pytam na alternativu.

Este ma napadlo, ak poznate EMS InterbaseManager, tam sa da nastavit prostredie
na:
- office like (vyzera to na upravene MDI)
- delphi like

Ako to robia? Velmi sa mi paci to "delphi like", a prave to ze to
nevyzera na ciste MDI...ci ano? Existuju nejake pravidla, alebo demo,
ako vytvarat prostredie "delphi like?"

>> - komplikacia zmeny farby hlavneho formu a vlozenie obrazku sucasne
>> (jasne, da sa to riesit, ale je to zbytocne kompl.)
JF> Zmena barvy main formu je bez problemu.
JF> S obrazkem je tam komplikace, protoze MDI Main form ma 2 vrstvy
Myslis? Vypni si na Mainforme Ctl3D := False a nastav farbu mainformu
na clWhite. V design time bude White no po spusteni je clAppWorkSpace
Ale toto je detail ... ;)

M.


Odpovedá: Milan Tomes

10. 6. 2004 7:00


> From: delphi-l-owner@clexpert.cz
> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of martin
> Sent: Wednesday, June 09, 2004 4:17 PM
>
> Povodna sprava zo dna : 9. 6. 2004, od <jan.fiala@wo.cz> :
> >> - ak vytvaram form, hned sa aj zobrazi
> JF> A proc jej potrebujes mit vytvoreny a nezobrazeny ?
> Napr. preto, ze mam na nom nejaku komponentu, ktoru potrebujem aj inde
> - teda jej aktualny stav property a pod.
> Jasne, ze to ide urobit inak, ale jednoducho mi vadi ze create
> "spusta" hned aj show ....berem, ze to vychadza z architektury MDI, a
> preto sa pytam na alternativu.

U vsech formu nech FormStyle na fsNormal a zkus pouzit toto:

type
  TForm1 = class(TForm)
  public
    function ShowModal: integer; override;
    procedure Show;
  end;

procedure TForm1.Show;
begin
  if FormStyle = fsNormal then
    FormStyle := fsMDIChild;
  inherited Show;
end;

function TForm1.ShowModal: integer;
begin
  if FormStyle = fsMDIChild then
  begin
    FormStyle := fsNormal;
    Visible := false;
  end;
  Result := inherited ShowModal;
end;

Nam to funguje bez problemu  

S pozdravem

Milan Tomes